home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / C / DRVSPC.ZIP / DRVSPC1.ASM < prev    next >
Encoding:
Assembly Source File  |  1989-02-01  |  1.7 KB  |  68 lines

  1. ;
  2. ;     MODULE: DRVSPC1.ASM - LEM TO READ FREE SPACE ON CURRENT DRIVE
  3. ;
  4.  
  5. _TEXT    SEGMENT BYTE PUBLIC 'CODE'
  6. _TEXT    ENDS
  7. _DATA    SEGMENT BYTE PUBLIC 'DATA'
  8. _DATA    ENDS
  9. _BSS     SEGMENT BYTE PUBLIC 'BSS'
  10. _BSS    ENDS
  11. _END    SEGMENT    BYTE PUBLIC 'LEMEND'
  12. _END    ENDS
  13.  
  14. DGROUP    GROUP _TEXT,_DATA,_BSS,_END
  15.  
  16. _TEXT    SEGMENT BYTE PUBLIC 'CODE'
  17.     ASSUME    CS:_TEXT,DS:DGROUP
  18.  
  19.     EXTRN    MY_C_FUNC:NEAR        ;C FUNTION TO TEST CALLING LIBRARY
  20.     EXTRN    BINEND:BYTE        ;DUMMY MODULE LINKED LAST FOR END
  21.  
  22. ;-------BINARY MOUDULE HEADER
  23.  
  24.     DB    'BIO'            ;BIN SIGNATURE
  25.     DD    0                       ;RESERVED
  26.     DW     BINEND            ;LENGTH OF BINARY MODULE
  27.     DB    1            ;ONE ROUTINE IN THIS BIN
  28.  
  29. ;-------PROCEDURE DEFINITION (GET_FREE)
  30.     DB    'GET_FREE',0,0,0,0,0    ;CLARION FUNCTION NAME (13 BYTES)
  31.     DW    CALL_C_LIBRARY        ;OFFSET WITH IN BINARY MODULE
  32.     DB    1            ;DEFINDED AS FUNCTION
  33.     DB    1            ;WITH NO PARAMETERS
  34.  
  35.        DB    1            ;SET UP SHORT
  36. PARM1    DD    0            ;ADDRESS OF VARIABLE
  37.      DW    0                       ;LENGTH OF VARIABLE
  38.  
  39. ;-------END OF HEADER-----------------------------------------------------
  40.  
  41.  
  42. ;-------Area after header may be used to declare data variable to use-----
  43.     PUBLIC    RTNVAL            ;MAKE BUFFER AVAILABLE TO C FUNCTION
  44. RTNVAL    DW        0             ;BUFFER FOR RETURN VALUES
  45.     PUBLIC    DRVNUM              
  46. DRVNUM    DW    0        
  47.  
  48.  
  49.  
  50. ;-------Must be a FAR procedure so that the RET instruction does a far return
  51. CALL_C_LIBRARY    PROC    FAR
  52.  
  53.         LES    BX,PARM1                ;MOVE PARM1 TO DRVNUM
  54.         MOV    AX,ES:[BX]        
  55.         MOV    DRVNUM,AX
  56.     CALL    MY_C_FUNC        ;PLACE FREE DISK SPACE IN RTNVAL
  57.  
  58.  
  59. ;-------Set up registers so that CLARION knows what is being returned
  60.     LEA    BX,RTNVAL        ;BX: OFFSET OF RETURNED VALUE
  61.     MOV    AL,2            ;AL: (2 = RETURNING A LONG)
  62.     RET                ;RETURN TO CLARION
  63.  
  64. CALL_C_LIBRARY    ENDP
  65.  
  66. _TEXT    ENDS
  67.     END        
  68.